perm filename FILLS.F4[TMP,LCS] blob sn#132737 filedate 1974-11-27 generic text, type C, neo UTF8
COMMENT āŠ—   VALID 00002 PAGES
C REC  PAGE   DESCRIPTION
C00001 00001
C00002 00002	C***** FILLER, HGHT, MISS, HALF ********
C00006 ENDMK
CāŠ—;
C***** FILLER, HGHT, MISS, HALF ********
C  Q AND R  ARE X,Y COORDS.  NE(1)=WDCNT. OTHER NE'S HAVE 3
C   FOR INVIS. VECTORS.   M=VERTICAL SCAN LINES
	SUBROUTINE FILLER(Q,R,NE,M,LP,IT,LD,LS)
	DIMENSION Q(1),R(1),NE(1)
	KK=NE(1)
	NX=-10000
	JN=NX
	KJ=2
	DO 4 K=2,KK
	IF(NE(K).NE.3)GO TO 11
	NE(K)=KJ
	KJ=K+1
	GO TO 4
11	NE(K)=0
4	CONTINUE
	DO 12 K=1,KK
	Q(K)=IFIX(Q(K))
12	R(K)=IFIX(R(K))
	NE(KK+1)=KJ
	DO 2 J=2,KK
	IF(NE(J).GT.0.OR.Q(J).EQ.Q(J-1))GO TO 2
	XMID=HALF(Q,J)+.00001
	ALT=HALF(R,J)
	KJ=0
100	DO 3 L=2,KK
	IF(L.EQ.J.OR.NE(L).GT.0)GO TO 3
	IF(MISS(L,XMID,Q))GO TO 3
40	Y=HGHT(L,XMID,Q,R)
	IF(Y.LT.ALT)KJ=KJ+1
3	CONTINUE
	IF(MOD(KJ,2).EQ.0)GO TO 2
	NE(J)=-1
	KJ=M
	N=Q(J)
	L=Q(J-1)
	ALT=.0001
	IF(N.GT.L)GO TO 33
	KJ=-KJ
	ALT=-ALT
33	IF(L.EQ.NX.AND.JN.EQ.J-1)GO TO 17
	JA=3
	X=-1
17	NX=N
	JN=J
	DO 6 K=L,N,KJ
	RK=K
	XK=RK
	IF(K.EQ.N)ALT=-ALT
 	RK=RK+ALT
	Y=HGHT(J,RK,Q,R)
	IF(X)CALL LINES(XK,Y,JA,LP,IT,LS,LD)
	JA=2
	H=-10000
18	DO 7 I=2,KK
	IF(NE(I).NE.0)GO TO 7
	IF(MISS(I,RK,Q))GO TO 7
9	B=HGHT(I,RK,Q,R)
	IF(B.GT.Y)GO TO 7
	IF(B.LE.H)GO TO 7
	H=B
	IX=I
7	CONTINUE
	IF(H.EQ.Y)GO TO 31
	IF(H.NE.-10000)GO TO 31
	NX=-10000
	X=-1
	GO TO 6
31	IF(IX.NE.JX.AND.X.GT.0)JA=3
	JX=IX
	CALL LINES(XK,H,JA,LP,IT,LS,LD)
	JA=2
	IF(X.GT.0)CALL LINES(XK,Y,JA,LP,IT,LS,LD)
	X=-X
6	CONTINUE
2	CONTINUE

	END
	
	FUNCTION HGHT(J,A,Q,R)
	DIMENSION Q(1),R(1)
	B=R(J-1)
	D=Q(J-1)
	F=Q(J)
	HGHT=((R(J)-B)*(A-D))/(F-D)+B
	IF(F.EQ.D)HGHT=B
	END

	FUNCTION MISS(J,A,Q)
	DIMENSION Q(1)
	B=Q(J)
	C=Q(J-1)
	MISS=-1
	IF((A.LT.C.AND.A.GT.B).OR.(A.LT.B.AND.A.GT.C))MISS=0
	END

	FUNCTION HALF(A,J)
	DIMENSION A(1)
	HALF=(A(J-1)-A(J))/2.+A(J)
	END


	SUBROUTINE LINES(A,B,J,I,IT,L,LD)
	M=A
	N=B
	IF(IT.LT.11)GO TO 41
	M=B
	N=A
	IF(L.AND.N.NE.LY)J=3
11	IF(.NOT.I)GO TO 2
	IF(J.EQ.3)GO TO 1
	CALL AVECT(M,N)
	RETURN
1	CALL AIVECT(M,N)
	RETURN
41	IF(L.AND.M.NE.LX)J=3
	GO TO 11
2	IF(J.EQ.3.OR..NOT.LD)GO TO 42
	NI=2
	IF(IT.GT.10)GO TO 44
	MI=IT*1.3
	IF(LY.LT.N)GO TO 46
	MI=-MI
	NI=-NI
46	MD=MI
	IF(J.EQ.4)J=2
	IF(J.EQ.2)MD=NI
	LY=LY+MD
	IF(MI.AND.LY.LT.N)GO TO 42
	IF(.NOT.MI.AND.LY.GT.N)GO TO 42
47	CALL PLOT(LX,LY,J)
	J=J+1
	IF(IT.GT.10)GO TO 43
	GO TO 46
44	MI=(IT-10)*1.3
	IF(LX.LT.M)GO TO 43
	MI=-MI
	NI=-NI
43	MD=MI
	IF(J.EQ.4)J=2
	IF(J.EQ.2)MD=NI
	LX=LX+MD
	IF(MI.AND.LX.LT.M)GO TO 42
	IF(.NOT.MI.AND.LX.GT.M)GO TO 42
	GO TO 47
42	CALL PLOT(M,N,J)
	LX=M
	LY=N
	END